package cn.gok.exceptionHandler;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.util.JSONPObject;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;

/**
   自定义Sprig mvc异常处理器方式1：
        以实现HandlerExceptionResolver接口的方式来实现 ,处理所有的异常
 */
public class MyExceptionHandler01 implements HandlerExceptionResolver {

    /**
        当出现异常时，可以交由该方法来进行处理
        返回结果为ModelAndView， 一般时跳转到一个友好的异常提示页面
     */
    @Override
    public ModelAndView resolveException(HttpServletRequest request,
                                         HttpServletResponse response,
                                         Object handler,
                                         Exception ex) {
        /*
            1、先记录异常的基础信息：
                    请求的地址信息
                    请求的参数信息
                    报的异常
         */
        String serverName = request.getServerName();
        int serverPort = request.getServerPort();
        String servletPath = request.getServletPath();
        Map parameterMap =  request.getParameterMap();
        System.out.println("服务地址:  " + serverName);
        System.out.println("服务端口号:  " + serverPort);
        System.out.println("请求路径:  " + servletPath);
        System.out.println("parameterMap:  " + parameterMap);
        System.out.println(ex.getStackTrace());


        //2、跳转到友好的界面
        return new ModelAndView("error");
    }
}
